home *** CD-ROM | disk | FTP | other *** search
- #include "kSanAGWindow.h"
- #include "kSanSharedUtils.h"
- #include "OHApplicationPublic.h"
- #include "OHCursor.h"
- #include "OHMenu.h"
- #include "OHPictButton.h"
- #include "OHMultipleViews.h"
- #include "OHScrollableView.h"
-
- void toggleShowBonds (OHWindow * wp);
- short AGWinClose (AGWindow *ag);
- void AGWinDoNull(OHWindow *wp);
-
- void AGWinDoKeyDown(OHWindow *wp, char theChar);
- short AGWindowDoMessage (KozoDispatchStack *ds, doMessageMethodArgs *dmma);
- short AGWindowHandleReport (KozoDispatchStack *ds, reportMethodArgs *rd);
- void AGWindowIdle(AGWindow *gw, EventRecord *event);
- short AGWinAddControlsCompletionProc(KozoDispatchStack *ds, constructorMethodArgs *cma, AGWindow *ag);
- short addAGButton(AGWindow *gw, short resID, short nowVisible, ProcPtr func, Rect *theRect, kozoObject **butt);
- void setOptionKeyToggleButtons(AGWindow *gw);
-
- void AGWinHandleMenuChoice (AGWindow * gw, short item);
- short AGWindowActivate(AGWindow *gw);
- short AGWindowDeactivate(AGWindow *gw);
- void initVectorsAndVertices(void);
- void initCellManip(AGWindow *gw);
- void AGWindowDoMouseModeSwitch (AGWindow*ag);
- short AGWindowDoMouseMoved ( AGWindow *ag);
- //void AGWindowSetWindowCenter(kozoObject *agObj,AGWindow *ag);
- void AGWindowDoShowBondsSwitch (AGWindow *ag);
-
-
- //kozoObject *agMenu;
- LinePair gCubeEdges[NUMCUBEEDGES];
- kSanVector gCubeVerticies[NUMCUBEVERTICES];
-
- short initClassAGWindow(void)
- {
- short err = noErr;
- kozoClass *newClass;
- kozoObject *co;
-
- newClass = addClass(&co,ClassAGWindow, ClassView, sizeof (AGWindow), "atom graphics window");
- if (newClass)
- {
- err = setFuncs(newClass, 0L, AGWindowConstructor,
- AGWindowDestructor, AGWindowGetData, AGWindowSetData, AGWindowDoMessage,
- AGWindowHandleReport, nilCountFunc, nilResolveFunc, nilCreateElementFunc);
- OHViewSetViewFuncs (newClass, AGWindowDraw, AGWindowDoKey, AGWindowDoClick, AGWindowFindObject, nilPointer);
- addInheritance(newClass, ClassScrollableView);
- addInheritance(newClass, ClassFilmableView);
- addInheritance(newClass, ClassPane);
- addInheritance(newClass, ClassMultipleViews);
- addInheritance(newClass, ClassWindow);
- initVectorsAndVertices();
-
- err = kozoClassAddRemove4ItemsToSave(newClass, true, pMagnification ,pPerspective ,pParticleSize ,pBondsVisible);
- err = kozoClassAddRemove4ItemsToSave(newClass, true, pShadeMethod, pSizeMethod , pShadeRange ,pShadeEven );
- err = kozoClassAddRemove3ItemsToSave(newClass, true, pParticleSizeFactor , pViewMatrix, pAGParticleList );
- } // note: pColourMethodObj means get an kozoObject ptr: kozo should be smart enought to make sure the object is actually saved
- return (err);
- }
-
- void initAGMenu(kozoObject *mBarObj)
- {
- short err = noErr;
- char initName[10] = "Graphics";
- kozoObject *agMenu = nilPointer;
- kozoObject *newItem = nilPointer;
-
- kozoNew2DataPtrs(&agMenu, ClassMenu, mBarObj,
- pName, typeChar, initName, strlen(initName),
- pEnabled, typeFalse, nilPointer, 0L);
-
- OHStoreUniqueReference(agMenu, globalAppObject, mAGWindowMenu);
-
- newItem = kSanMenuItemAllocateWithThreeArgs(agMenu, (ProcPtr) messageForFrontWindow, kDoDialogMessage, typeNull, nilPointer, "Settings...");
- newItem = kSanMenuItemAllocateWithThreeArgs(agMenu, (ProcPtr) messageForFrontWindow, kAGWindowMouseFunctionToggle, typeNull,nilPointer, "Mouse Manipulation");
- OHStoreUniqueReference(newItem, globalAppObject, iMouseModeMenuItem);
- newItem = kSanMenuItemAllocateWithThreeArgs(agMenu, (ProcPtr) messageForFrontWindow, kAGWindowShowBondsToggle, typeNull,nilPointer, "Bond Visibility");
- OHStoreUniqueReference(newItem, globalAppObject, iBondsMenuItem);
- newItem = kSanMenuItemAllocateWithThreeArgs(agMenu, (ProcPtr) messageForFrontWindow, kAGWindowDefaultView,typeNull, nilPointer, "Default View");
-
- }
-
- void setCubeEdge(LinePair*edge, short start, short end, short colour);
- void setCubeEdge(LinePair*edge, short start, short end, short colour)
- {
- edge->start = start;
- edge->end = end;
- edge->colour = colour;
- }
-
- void initVectorsAndVertices(void)
- {
-
- #ifndef __2DVectors__
- setkSanVectorD (&gCubeVerticies[0], 0.5, 0.5, 0.5 );
- setkSanVectorD (&gCubeVerticies[1], 0.5, 0.5, -0.5 );
- setkSanVectorD (&gCubeVerticies[2], 0.5, -0.5, 0.5 );
- setkSanVectorD (&gCubeVerticies[3], 0.5, -0.5, -0.5 );
- setkSanVectorD (&gCubeVerticies[4], -0.5, 0.5, 0.5 );
- setkSanVectorD (&gCubeVerticies[5], -0.5, 0.5, -0.5 );
- setkSanVectorD (&gCubeVerticies[6], -0.5, -0.5, 0.5 );
- setkSanVectorD (&gCubeVerticies[7], -0.5, -0.5, -0.5 );
- #else
- setkSanVectorD (&gCubeVerticies[0], 0.5, 0.5, 0 );
- setkSanVectorD (&gCubeVerticies[1], 0.5, -0.5, 0 );
- setkSanVectorD (&gCubeVerticies[2], -0.5, 0.5, 0 );
- setkSanVectorD (&gCubeVerticies[3], -0.5, -0.5, 0 );
- #endif
-
- #ifndef __2DVectors__
- setCubeEdge(&gCubeEdges[0], 0,1,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[1], 0,2,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[2], 0,4,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[3], 1,3,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[4], 1,5,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[5], 2,3,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[6], 2,6,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[7], 3,7,kLinePairRedColour);
- setCubeEdge(&gCubeEdges[8], 4,5,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[9], 4,6,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[10], 5,7,kLinePairGreenColour);
- setCubeEdge(&gCubeEdges[11], 6,7,kLinePairBlueColour);
- #else
- setCubeEdge(&gCubeEdges[0], 0,1,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[1], 0,2,kLinePairBlackColour);
- setCubeEdge(&gCubeEdges[2], 1,3,kLinePairRedColour);
- setCubeEdge(&gCubeEdges[3], 2,3,kLinePairGreenColour);
- #endif
- }
-
- void initCellManip(AGWindow *gw)
- {
- gw->manip.latRotateAngle = 2.0;
- gw->manip.longRotateAngle = 2.0;
- gw->manip.axialRotateAngle = 2.0;
- gw->manip.horizShift = 0.5;
- gw->manip.vertShift = 0.5;
- gw->manip.hikiShift = 0.5;
- }
-
- short AGWindowConstructor(KozoDispatchStack *ds, constructorMethodArgs *cma)
- {
- short err = noErr;
- char beingUnflattened = false;
- float halfFloat = 0.5;
- DescType classToDraw = ClassButton;
- Rect r = {-1000, -1000, +1000, +1000};
- AGWindow *gw = (AGWindow *) ds->thisPD;
-
- insertParam (cma->initialData, pBounds, typeQDRectangle, &r, sizeof(Rect));
- extractParam (ds, cma->initialData, pVisibleBounds, typeQDRectangle, &r, sizeof(Rect));
- insertParam (cma->initialData, pMVClassToDraw, typeType, &classToDraw, sizeof(DescType));
- insertParam (cma->initialData, pHorizontalFractionScrolled, typeShortFloat, &halfFloat, sizeof(float));
- insertParam (cma->initialData, pVerticalFractionScrolled, typeShortFloat, &halfFloat, sizeof(float));
-
- if (! AERecordHasKey(cma->initialData, pAGParticleList) ) insertParam (cma->initialData, pIncludeAllParticles, typeTrue, nilPointer, 0L);
-
- extractParam (ds, cma->initialData, pBeingUnflattened, typeBoolean, &beingUnflattened, sizeof(char)) ;
- err = dispatchLoop(ds, cma);
- if (!err)
- {
- gw->win = KDSGetPrivateData(ds, ClassWindow);
- gw->mode = kSelectAndHighlightMode;
- gw->doColourCalc = true;
- initCellManip(gw);
- AGDefaultView(&gw->windowView);
-
- AGSetSizeMethod (gw, kSizeByWindow);
- AGSetShadeMethod (gw, kNoShade);
-
- gw->cpi = nilPointer;
- gw->sim = simData (cma->container);
- if (!beingUnflattened) AGSetColourMethodMenuChoice(gw, 1);
- err = VSListInitialize(&gw->grafDataList, sizeof(grafData));
- //gw->grafDataHandle = NewHandle(0); // a grafData structure
- //gw->grafLockCount = 0;
- }
- initializeList(&gw->orderList);
- initializeList(&gw->particleList);
- BitListInitialize(&gw->partBits);
- KDSAddCompletionProc(ds, AGWinAddControlsCompletionProc, gw);
- KDSReturnError(ds, err);
- }
-
-
-
- short AGWindowDestructor (KozoDispatchStack *ds, destructorMethodArgs* dma)
- {
- #pragma unused(dma)
- AGWindow *gw = (AGWindow *) ds->thisPD;
- AGWinInstallModule (gw, ClassColourPlugIn, nilPointer);
-
- BitListDispose(&gw->partBits);
- VSListDispose(&gw->grafDataList);
- disposeList(&gw->orderList );
- disposeList(&gw->particleList);
- KDSReturnContinue(ds);
- }
-
-
-
- short AGWindowDoMouseMoved ( AGWindow *ag)
- {
- short err = noErr;
- char unused;
- char useArrow = false;
- #pragma unused(unused)
- RgnHandle rgn = NewRgn();
- RgnHandle circleRgn = NewRgn();
- OHBufferedView *bv = kozoObjectGetPrivateData (ag->win->obj, ClassBufferedView);
- kozoObject *newCursorObj = nilPointer;
- Point zeroPoint = {0,0};
- Point localPoint;
-
- GetMouse (&localPoint);
- LocalToGlobal (&zeroPoint);
-
- if (ag->mode == kSelectAndHighlightMode)
- {
- if (PtInRect(localPoint, &( bv->world->portRect)))
- {
- newCursorObj = OHGetNamedReference(globalAppObject, kFingerCursor);
- RectRgn(rgn, &bv->world->portRect );
- // now subtract the circle region
- DiffRgn(rgn, circleRgn, rgn);
- }
- else
- {
- useArrow = true;
- }
- }
- else
- {
- AGWindowSetDragActiveRegion( ag, circleRgn);
- if (PtInRgn ( localPoint, circleRgn))
- {
- newCursorObj = OHGetNamedReference(globalAppObject, kRotateCursor);
- CopyRgn(circleRgn, rgn);
- }
- else if (PtInRect(localPoint, &( bv->world->portRect)))
- {
- newCursorObj = OHGetNamedReference(globalAppObject, kSpinCursor);
- RectRgn(rgn, &bv->world->portRect );
- // now subtract the circle region
- DiffRgn(rgn, circleRgn, rgn);
- }
- else
- {
- useArrow = true;
- }
- }
-
-
- if (useArrow)
- {
- Rect r;
- OHSetRect (&r, localPoint.h, localPoint.v,localPoint.h + 1, localPoint.v + 1);
- RectRgn(rgn, &r);
- newCursorObj = OHGetNamedReference(globalAppObject, kArrowCursor);
- }
- dispatchNilMessage (newCursorObj , kSetCursorMessage);
-
- if (rgn) OffsetRgn(rgn,zeroPoint.h,zeroPoint.v);
- setAppMouseRegion (rgn);
- DisposeRgn(rgn);
- DisposeRgn(circleRgn);
- return(err);
- }
-
-
-
- short AGWinDoRotateEvent(AGWindow *ag, AEMessageData *md);
- short AGWinDoRotateEvent(AGWindow *ag, AEMessageData *md)
- {
- short err = noErr;
- AEDesc data = gNilDesc;
- AEDesc trixDesc = gNilDesc;
- DescType actualType;
- long actualSize;
- float horiz = 0;
- float vert = 0;
- float axial = 0;
- kSanMatrix trix;
-
- AEGetParamPtr( md->event, keyHorizontalRotation, typeShortFloat, &actualType, &horiz, sizeof(float), &actualSize );
- AEGetParamPtr( md->event, keyVerticalRotation, typeShortFloat, &actualType, &vert, sizeof(float), &actualSize );
- AEGetParamPtr( md->event, keyAxialRotation, typeShortFloat, &actualType, &axial, sizeof(float), &actualSize );
- horiz *= -1.0;
- trix = ag->windowView.viewMatrix;
- Spin3dMatrixInDegreesD(&trix, horiz, vert, axial);
-
- make3dMatrixDescD(&trix, &trixDesc );
- kozoSetData(ag->win->obj, pViewMatrix, &trixDesc);
- AEDisposeDesc(&trixDesc);
-
- return (err);
- }
- short AGWindowDoMessage (KozoDispatchStack *ds, doMessageMethodArgs *dmma)
- {
- short err = noErr;
- AGWindow *ag = (AGWindow *) ds->thisPD;
- switch (dmma->message)
- {
- case kRotateMessage:
- err = AGWinDoRotateEvent(ag, (AEMessageData *) dmma->data);
- break;
- case kAGWindowSettingsDialog :
- case kDoDialogMessage:
- AGWinDoDialog(ag);
- break;
- case kAGWindowShowBondsToggle :
- AGWindowDoShowBondsSwitch(ag);
- break;
- case kAGWindowDefaultView :
- // dialogResult = doAShortDialog(kSetViewDialogResID, nilPointer);
- break;
- case kAGWindowMouseFunctionToggle :
- AGWindowDoMouseModeSwitch(ag);
- break;
- case kMouseMovedMessage :
- AGWindowDoMouseMoved( ag);
- goto Default;
- case kActivateMessage:
- // set the mouseRegion to a small rect so we'll get a mouse moved event
- {
- RgnHandle noRgn = NewRgn();
- setAppMouseRegion (noRgn);
- DisposeRgn(noRgn);
- }
- goto Default;
- case kDeactivateMessage:
- {
- AEDesc activeDesc = {typeTrue, nilPointer};
-
- if (dmma->message == kDeactivateMessage) activeDesc.descriptorType = typeFalse;
-
- err = kozoSetData(OHGetNamedReference(globalAppObject, mAGWindowMenu), pEnabled, &activeDesc);
- }
- goto Default;
- case kControlValueChangedMessage:
- break;
- case kNullEventMessage: // not an idle message
- AGWindowIdle( ag, (EventRecord *) dmma->data);
- break;
- case kSetMouseModeButtonsMessage:
- SetAllMouseModeButtons(ag);
- break;
- // case kGetSimulationPtrMessage:
- // if (gw->sim) (* ((kSanSimulation **)dmma->data)) = gw->sim;
- // else err = OHErrNullObject;
- // break;
- case kInitializeWindowOrderListMessage :
- break;
- case kChangeParticleIndexMessage:
- AGWindowChangeParticleIndex( ag, ((long *)dmma->data)[0], ((long *)dmma->data)[1]);
- break;
- case kRemoveParticleListMessage:
- AGWindowRemoveParticleList( ag, (OHList *) dmma->data);
- break;
- case kRemoveParticleMessage:
- AGWindowRemoveParticle( ag, (long) dmma->data);
- break;
- case kAddParticleListMessage :
- err = AGWindowAddParticleList ( ag, (OHList *)dmma->data);
- break;
- case kAddParticleMessage :
- err = AGWindowAddToPartList( ag, (long) dmma->data);
- break;
- case kUnflattenFinishedMessage:
- err = dispatchLoop(ds, dmma);
- {
- kozoObject *aPlugIn = OHGetNamedReference(ds->obj, ClassColourPlugIn);
-
- if (!aPlugIn) aPlugIn = kozoObjectGetNthItemOfClassX(ds->obj, ClassColourPlugIn, 0);
-
- if (aPlugIn)
- {
- err = AGWinInstallModule (ag, ClassColourPlugIn, aPlugIn);
- }
- else
- {
- AGSetColourMethodMenuChoice(ag, 1);
- }
- }
- goto Default;
- case kCopyMessage:
- err = dispatchLoop(ds, dmma);
- case kCutMessage:
- case kPasteMessage:
- case kClearMessage: // send the message to the simulation
- if (!err) err = forwardMessage (simOBJ(ag->sim), dmma);
- break;
- Default:
- default:
- KDSReturnContinue(ds);
- break;
- }
- KDSDoneDispatch(ds);
- KDSReturnError(ds, err);
- }
-
- short AGWindowHandleReport (KozoDispatchStack *ds, reportMethodArgs *rd)
- {
- short err = noErr;
- short shouldContinue = true;
- AGWindow *gw = (AGWindow *) ds->thisPD;
-
- switch (rd->functionForContainer)
- {
- case fDoMessage:
- switch (rd->args.dmma.message)
- {
- // case kGetSimulationPtrReport:
- // AGWindowDoMessage(ds, &rd->args.dmma);
- // shouldContinue = false;
- // break;
- }
- break;
- }
- if (!shouldContinue) KDSDoneDispatch(ds);
- KDSReturnError(ds, err);
- }
- void AGWindowIdle( AGWindow *gw, EventRecord *event)
- {
- #pragma unused(event)
-
- setOptionKeyToggleButtons( gw);
- // AGWindowMaintainCursor(ag);
- }
-
- short AGWinAddControlsCompletionProc(KozoDispatchStack *ds, constructorMethodArgs *cma, AGWindow *ag)
- {
- #pragma unused(cma)
- short err = noErr;
- short scrollInset = 68;
- kozoObject *butt;
- Rect r;
-
- if (!err) err = kozoGetDataPtr ( ds->obj, pBounds, typeQDRectangle, &r, sizeof(Rect));
- r.bottom = OHRectHeight(&r) + 1;
- r.top = r.bottom - 16;
- r.left = 0;
- r.right = r.left + 17;
-
- if (!err) err = kozoSetDataPtr ( ds->obj, pScrollLeftInset, typeShortInteger, &scrollInset, sizeof(short));
- addAGButton( ag, kMagnifyPictResID, true, (ProcPtr) magnifyButtonProc, &r, &butt);
- addAGButton( ag, kUnmagnifyPictResID,false , (ProcPtr) unmagnifyButtonProc, &r, &butt);
-
- r.left = r.right;
- r.right = r.left + 17;
- addAGButton(ag, kCloserPictResID, true, (ProcPtr) closerButtonProc, &r, &butt );
- addAGButton( ag, kFurtherPictResID, false , (ProcPtr) furtherButtonProc, &r, &butt);
-
- r.left = r.right;
- r.right = r.left + 17;
- addAGButton( ag, kLargeBallPictResID, true , (ProcPtr) largerButtonProc, &r, &butt);
- addAGButton( ag, kSmallBallPictResID, false , (ProcPtr) smallerButtonProc, &r, &butt);
-
- r.left = r.right;
- r.right = r.left + 17;
- addAGButton( ag, kRollCellPictResID, true , (ProcPtr) rollCellButtonProc, &r, &butt);
- OHStoreUniqueReference(butt, ds->obj, kAGRollCellButton);
-
- addAGButton( ag, kSelectFingerPictResID, false , (ProcPtr)selectFingerButtonProc, &r, &butt);
- OHStoreUniqueReference(butt, ds->obj, kAGSelectHighlightButton);
- return (err);
- }
-
- void setOptionKeyToggleButtons( AGWindow *gw)
- {
- short i = 0;
- char optionKeyPressed = 0;
- char unused;
- #pragma unused(unused)
- OHList *buttList;
- kozoObject* nthButt;
-
-
- optionKeyPressed = keyIsPressed(kOptionKeyCode);
- if (gw->lastToggle != optionKeyPressed)
- {
- buttList = getListOfObjectsOfClassX (gw->win->obj, ClassButton);
- if (buttList)
- {
- gw->lastToggle = optionKeyPressed;
- for ( i= 0; i < 3; ++i)
- {
- char val ;
- nthButt = castTokozoObject(getNthItem (buttList, (2 * i))); // e.g. magnify button
- val = (!optionKeyPressed);
- if (nthButt) packageAndCallSetBool(nthButt, pVisible, val);
- nthButt = castTokozoObject(getNthItem (buttList, (1 + (2 * i)))); // e.g. magnify button
- val = (optionKeyPressed);
- if (nthButt) packageAndCallSetBool(nthButt, pVisible, val);
- }
- releaseListOfObjectsOfClassX (gw->win->obj, ClassButton);
- }
- }
- }
- void SetAllMouseModeButtons( AGWindow *ag)
- {
- kozoObject * butt;
- char val;
-
- val = (ag->mode == kSelectAndHighlightMode);
- butt = OHGetNamedReference(ag->win->obj, kAGRollCellButton);
- if (butt) packageAndCallSetBool(butt, pVisible, val);
-
- val = (ag->mode != kSelectAndHighlightMode);
- butt = OHGetNamedReference(ag->win->obj, kAGSelectHighlightButton);
- if (butt) packageAndCallSetBool(butt, pVisible, val);
-
- setMenuToSTR( iMouseModeMenuItem, (ag->mode == kMouseManipulationMode ? kSelectAndHighlightStringID : kMouseManipulationStringID) , "\pmouse mode");
- }
-
- short addAGButton( AGWindow *gw, short resID, short nowVisible, ProcPtr func, Rect *theRect, kozoObject **butt)
- {
- short err = noErr;
- short canSlide = topMovesWithWindowSize + bottomMovesWithWindowSize;
- short roundSize = 2;
- short bevelVariant = kControlBevelButtonSmallBevelProc;
- char viz = nowVisible;
- char unused;
- #pragma unused(unused)
- long oneArg = 1L;
- AEDesc pictDesc = {'PICT', nilPointer};
- AEDesc initialData = {typeNull, nilPointer};
-
- *butt = nilPointer;
- err = stuffRecord5Ptrs( &initialData, pBounds, typeQDRectangle, (Ptr) theRect, sizeof(Rect),
- pVisible, typeBoolean, (Ptr) &viz, sizeof(char),
- pPersistent, typeFalse, nilPointer, 0L,
- pBevelButtonVariant, typeShortInteger, &bevelVariant, sizeof(short),
- pPICTRezID, typeShortInteger, (Ptr) &resID, sizeof(short));
-
- err = stuffRecord4Ptrs( &initialData, pProcPtr, typeProcPtr, (Ptr) &func, sizeof(long) ,
- pNumArgs, typeLongInteger, (Ptr) &oneArg, sizeof(long) ,
- pArgument1, typeLongInteger, (Ptr) &gw, sizeof(long) ,
- pSlidability, typeShortInteger, (Ptr) &canSlide, sizeof(short) );
-
- if (!err) err = kozoNew(butt, ClassPictButton, gw->win->obj, &initialData);
- AEDisposeDesc (&initialData);
- return (err);
- }
-
- void AGWindowDoMouseModeSwitch ( AGWindow*ag)
- {
- if (ag->mode == kSelectAndHighlightMode)
- {
- AGSetMouseMode ( ag, kMouseManipulationMode );
- }
- else if (ag->mode == kMouseManipulationMode)
- {
- AGSetMouseMode ( ag, kSelectAndHighlightMode );
- }
- }
-
- /*
-
- void AGWindowSetWindowCenter(kozoObject *agObj, AGWindow *ag)
- {
- // short nowVal, maxVal, wHeight, wWidth;
- Point newCenter = {100, 100};
- wHeight = worldRect.bottom - worldRect.top;
- wWidth = worldRect.right -worldRect.left;
-
- if (gwp->pane.vScroll)
- {
- nowVal = GetControlValue(gwp->pane.vScroll->control.cHandle);
- maxVal = GetControlMaximum(gwp->pane.vScroll->control.cHandle);
- newCenter.v = (( (maxVal *0.5)- nowVal ) * kMaxWindowHeight / maxVal) ;
- }
- if (gwp->pane.hScroll)
- {
- nowVal = GetControlValue(gwp->pane.hScroll->control.cHandle);
- maxVal = GetControlMaximum(gwp->pane.hScroll->control.cHandle);
- newCenter.h = (( (maxVal *0.5) - nowVal) * kMaxWindowWidth / maxVal) ;
- }
- ag->windowView.cellCenter = newCenter;
- }
- */
- /************ DoShowBondsSwitch ****************/
- void AGWindowDoShowBondsSwitch ( AGWindow *ag)
- {
- AGSetBondsVisible ( ag, ((short)(!(ag->windowView.showBonds))));
- dispatchNilMessage(ag->win->obj, kInvalSelfMessage);
- }
-
-
- grafData * AGWindowLockGrafDataC(AGWindow * ag, long *numItems)
- {
- if (ag->grafDataDirty) AGWindowReinitializeGrafDataList(ag);
- return((grafData *)(VSListLockC(&ag->grafDataList, numItems)));
- }
- grafData * AGWindowLockGrafData(AGWindow * ag)
- {
- if (ag->grafDataDirty) AGWindowReinitializeGrafDataList(ag);
- return((grafData *)(VSListLock(&ag->grafDataList)));
- }
-
-